# -*- coding: utf-8 -*-
# @Time    : 2020/4/3 9:43
# @Author  : Jhin•W
# @Email   : 261229090@qq.com
# @File    : 继承.py
# @Software: PyCharm
#---------------------------------------------------

# class F:
#     def f1(self):
#         print('F.f1')
#     def f2(self):
#         print('F.f2')
#
# class S(F):
#     def s1(self):
#         print('S.s1')
#     def s2(self):
#         super(S, self).f2() #执行父类（基类）中的f2方法
#         # F.f2(self)        #执行父类（基类）中的f2方法
#         print('S.f2')

# obj = S() #创建对象，执行init方法
# obj.s1()    # s1中的self是形参，此时代指obj
# obj.f1()    # self用于指调用方法的调用者

#对象.方法名

#python中支持多继承
# 1.左侧优先
# 2.一条道走到黑
# 3.同一个根时，根最后执行

# 面向对象三大特性之三：多态


# class Foo:
#     def __init__(self, name):
#         #字段
#         self.name = name
#     #方法
#     def show(self):
#         print(self.name)

#类成员：
    # 字段
    # 方法

# class Province:
#     # 静态字段，属于类
#     country = '中国   '
#
#     def __init__(self, name):
#         #普通字段，属于对象
#         self.name =  name
#
# hebei = Province('河北')
# print(Province.country)
# print(hebei.name)

"""
类成员：
    # 字段
        - 普通字段，保存在对象中，执行只能通过对象访问
        - 今天字段，保存在对象中，执行可以通过对象访问  也可以通过类访问
    #方法
        - 普通方法，保存在类中，由对象来调用
        - 静态方法，
"""

class Foo:
    def Bar(self):
        print('bar')

    @staticmethod   #静态方法装饰器
    def sta():
        print('123')

obj = Foo()
obj.Bar()
Foo.sta()
# obj = Foo()
# Foo.bar(obj)